package core.thread;

import java.io.File;
import java.util.StringTokenizer;

import javax.swing.JFileChooser;

//Devuelve la ruta en la que el usuario quiere guardar la lista y en caso de que no haya seleccionado nada, devielve null;

/**Clase en la selccionamos una ruta para guardar un archivo
 * @author alvarogarcia
 *
 */
public class HiloBusquedaGuardar {
	private String ruta;
	private File archivo = null;
	private Thread t;

	/**
	 * Constructor sin parametros que declara el hilo
	 */
	public HiloBusquedaGuardar() {
		declararHilo();
	}

	/**
	 * Metodo que arranca el hilo que declaramos en el metodo declararHilo().
	 */
	public void arrancarHilo() {
		t.run();
	}

	/**
	 * Metodo que declara el hilo que ejecuta el metodo arrancarHilo()
	 */
	public void declararHilo() {
		t = new Thread(new Runnable() {
			public void run() {
				JFileChooser explorador = new JFileChooser();

				explorador.setDialogType(JFileChooser.SAVE_DIALOG);
				// Le cambiamos el titulo
				int seleccion = explorador.showDialog(null, "Guardar");

				// analizamos la respuesta
				switch (seleccion) {
				case JFileChooser.APPROVE_OPTION:
					File archivo = explorador.getSelectedFile();
					ruta = archivo.getPath();
					StringTokenizer tokens = new StringTokenizer(ruta, "/");
					String ultimo = null;
					while (tokens.hasMoreTokens()) {
						ultimo = tokens.nextToken();
					}
					StringTokenizer token = new StringTokenizer(ultimo, ".");
					if (token.hasMoreTokens() == false) {
						ruta = ruta + ".pdf";
						System.out.println("1");
					} else {
						String elemento = null;
						while (token.hasMoreTokens()) {
							elemento = token.nextToken();
						}
						if (elemento.equalsIgnoreCase("pdf")
								|| elemento.equalsIgnoreCase("PDF")) {
							System.out.println("2");
						} else {
							System.out.println(elemento);
							ruta = ruta + ".pdf";
							System.out.println("3");
						}
					}
					break;

				case JFileChooser.CANCEL_OPTION:
					
					ruta = null;
						
						
					break;

				case JFileChooser.ERROR_OPTION:
					System.out.println("Ha ocurrido un error");
					break;
				}
				
			}

		});
	}

	/**Metodo que nos devuelve la ruta seleccionada
	 * @return
	 */
	public String getRuta() {
		return this.ruta;
	}

	/**
	 * devuelve el archivo
	 * @return archivo
	 */
	public File getArchivo() {
		return archivo;
	}

	/**
	 * modifica el archivo
	 * @param archivo
	 */
	public void setArchivo(File archivo) {
		this.archivo = archivo;
	}
}
